#ifndef CMD_INFO_H
#define CMD_INFO_H

#include <string>
#include <vector>

typedef enum
{
    PARAM_TYPE_BOOL = 0,
    PARAM_TYPE_BYTE,
    PARAM_TYPE_WORD,
    PARAM_TYPE_DWORD,
    PARAM_TYPE_SINT,
    PARAM_TYPE_USINT,
    PARAM_TYPE_INT,
    PARAM_TYPE_UINT,
    PARAM_TYPE_DINT,
    PARAM_TYPE_UDINT,
    PARAM_TYPE_LINT,
    PARAM_TYPE_ULINT,
    PARAM_TYPE_REAL,
    PARAM_TYPE_LREAL,
    PARAM_TYPE_AXIS,
} param_type_t;

typedef struct cmd_param
{
    std::string name;
    param_type_t type;
    bool is_array;
}cmd_param_t;

class cmd_info
{
private:
    std::string name;
    std::vector<cmd_param_t> param_list;
    std::vector<cmd_param_t> out_list;

public:
    cmd_info(std::string name, std::vector<cmd_param_t> in, std::vector<cmd_param_t> out);
    ~cmd_info();
};

#endif // CMD_INFO_H
